// 专门处理权限路由的模块
import { publicRoutes, privateRoutes } from '@/router'

export default {
  namespaced: true,
  state: {
    // 路由表：初始拥有静态路由权限
    routes: publicRoutes
  },
  mutations: {
    /**
     * 增加路由
     */
    setRoutes(state, newRoutes) {
      // 永远在静态路由的基础上增加新路由
      state.routes = [...publicRoutes, ...newRoutes]
    }
  },
  actions: {
    /**
     * 根据权限数据筛选路由
     */
    filterRoutes(context, menus) {
      const routes = []
      // 路由权限匹配
      menus.forEach((key) => {
        // 权限名 与 路由的 name 匹配
        routes.push(...privateRoutes.filter((item) => item.name === key))
      })
      // console.log('store/permission.js -> 权限匹配的私有路由:', routes)

      // 所有不匹配的路由跳转404
      routes.push({
        path: '/:catchAll(.*)',
        redirect: '/404'
      })
      // 外链路由
      routes.push(
        {
          path: '/https://cn.element-plus.org/zh-CN/',
          name: 'elementPlus',
          meta: {
            title: 'elementPlus',
            icon: 'element-plus'
          }
        }
      )

      context.commit('setRoutes', routes)
      return routes
    }
  }
}
